package inge_soft.gestoriusNuevo.persistence.entity.implementation;

import inge_soft.gestoriusNuevo.persistence.entity.abstraction.Entidad;

import java.io.Serializable;
import javax.persistence.*;

//import com.sun.istack.NotNull;

/**
 * Clase de entidad, representa a un usuario registrado
 * 
 */
@Entity
@Table(name = "USUARIOS_REGISTRADOS", uniqueConstraints = @UniqueConstraint(columnNames = { "nick" }))
public class UsuarioRegistrado implements Entidad, Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Long id;

	@Column(name = "nick", nullable = false)
	private String nick;

	@Column(name = "contrasenia", nullable = false)
	private String contrasenia;

	@Column(name = "contraseniaRegenerada", nullable = false)
	private boolean contraseniaRegenerada;

	@Column(name = "rol", nullable = false)
	private Integer rol;

	@OneToOne
	@JoinColumn(name = "usuario_id")
	private Usuario usr;

	public UsuarioRegistrado() {
	}

	public UsuarioRegistrado(Usuario usuario) {
		this.usr = usuario;
	}

	public UsuarioRegistrado(String nick, String pass) {
		this.nick = nick;
		this.contrasenia = pass;
	}

	public long getId() {
		return id;
	}

	public String getNick() {
		return nick;
	}

	public void setNick(String nick) {
		this.nick = nick;
	}

	public String getContrasenia() {
		return contrasenia;
	}

	public void setContrasenia(String pass) {
		this.contrasenia = pass;
	}

	public Integer getRol() {
		return rol;
	}

	public void setRol(Integer rol) {
		this.rol = rol;
	}

	public Usuario getUsuario() {
		return usr;
	}

	public void setUsuario(Usuario usr) {
		this.usr = usr;
	}

	public boolean isContraseniaRegenerada() {
		return contraseniaRegenerada;
	}

	public void setContraseniaRegenerada(boolean contraseniaRegenerada) {
		this.contraseniaRegenerada = contraseniaRegenerada;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		UsuarioRegistrado other = (UsuarioRegistrado) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return this.getNick();
	}

}
